Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Altri Linguaggi - [assembly 8086] stampare decimale a due cifre
Forum - Altri Linguaggi - [assembly 8086] stampare decimale a due cifre

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
mistervox (Normal User)
Rookie


Messaggi: 26
Iscritto: 11/01/2010

Segnala al moderatore
Postato alle 19:52
Sabato, 20/02/2010
Ciao ragazzi, oggi mi è stato assegnato un programma per casa da fare in assembly che stampi semplicemente un numero decimale a due cifre, il problema è che il prof ci ha spiegato solo com fare se il numero è compreso tra 0 e 9, perchè basta sommare al registro 30h, e poi uso 01h e l'interrupt  se il numero è a due cifre non so come fare.
Se ho capito giusto con questo codice mi stampa solo la cifra 1 di pippo, che vale 15.
Questo è il codice:
Codice sorgente - presumibilmente Altri Linguaggi

  1. ;****************************************************************************************
  2. ; XXXX
  3. ;****************************************************************************************
  4.  
  5. .model small
  6. .stack
  7. .data
  8.         ; <<inserire qui le dichiarazioni delle variabili>>
  9.         pippo db 15
  10.        
  11. .code
  12.  
  13. inizio:
  14.         mov ax, @data     ; imposto il segmento dati
  15.         mov ds, ax
  16.        
  17.         ; <<inserire qui le istruzioni del programma>>
  18.        
  19.         mov al,pippo                            ; restituisco il controllo al DOS con codice 0
  20.         mov ah,01h
  21.         add ah,30h
  22.         mov ah,pippo
  23.         int 21h
  24.        
  25. end inizio


Potete gentilmente spiegarmi come fare per stampare due cifre? Grazie :)

Ultima modifica effettuata da mistervox il 12/11/2013 alle 23:20
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6405
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 20:07
Sabato, 20/02/2010
Testo quotato

Postato originariamente da mistervox:
... spiegarmi come fare ...



Devi dividere il valore per 10, convertire il risultato in ASCII (aggiungendo il 30h) e visualizzare il risultato; poi prendi il resto della divisione, lo converti in ASCII (aggiungendo il 30h) e lo visualizzi.


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
mistervox (Normal User)
Rookie


Messaggi: 26
Iscritto: 11/01/2010

Segnala al moderatore
Postato alle 20:12
Sabato, 20/02/2010
Testo quotato

Postato originariamente da nessuno:

Testo quotato

Postato originariamente da mistervox:
... spiegarmi come fare ...



Devi dividere il valore per 10, convertire il risultato in ASCII (aggiungendo il 30h) e visualizzare il risultato; poi prendi il resto della divisione, lo converti in ASCII (aggiungendo il 30h) e lo visualizzi.


Domani provo a farlo e poi ti so dire. Grazie.

PM Quote
Avatar
mistervox (Normal User)
Rookie


Messaggi: 26
Iscritto: 11/01/2010

Segnala al moderatore
Postato alle 21:24
Giovedì, 25/02/2010
Ragazzi ecco la consegna completa dell'esercizio: Produrre la pseudocodifica per l'algoritmo che stampa a video un numero intero positivo di n cifre, una cifra per volta.

Come posso fare, io devo stampare una cifra alla volta.
Io avevo pensato così, dato che devo solo produrre la pseudocodifica avevo pensato ad una cosa del genere come mi è stato detto alcuni post sopra.

quoto: Devi dividere il valore per 10
Se io acquisisco 470
divido 470 per 10 e ottengo 47

quoto: convertire il risultato in ASCII (aggiungendo il 30h)
ora non posso aggiungere 30h perchè 47 ha due cifre

quoto: visualizzare il risultato
qua non ci sono problemi uso int 21h

quoto: poi prendi il resto della divisione
come faccio? :-|

quoto: lo converti in ASCII (aggiungendo il 30h) e lo visualizzi.
add 30h e int 21h, ma se è un numero da più cifre non si può fare

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6405
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:28
Giovedì, 25/02/2010
Se cambi esercizio, è ovvio che i suggerimenti non vanno piu' ...

Avevi scritto

"stampi semplicemente un numero decimale a due cifre"

adesso scrivi

"stampa a video un numero intero positivo di n cifre"

Deciditi ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
mistervox (Normal User)
Rookie


Messaggi: 26
Iscritto: 11/01/2010

Segnala al moderatore
Postato alle 21:35
Giovedì, 25/02/2010
Testo quotato

Postato originariamente da nessuno:

Se cambi esercizio, è ovvio che i suggerimenti non vanno piu' ...

Avevi scritto

"stampi semplicemente un numero decimale a due cifre"

adesso scrivi

"stampa a video un numero intero positivo di n cifre"

Deciditi ...


All'inizio non sapevo la consegna esatta, ora che si sa potete aiutarmi?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6405
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:39
Giovedì, 25/02/2010
E dove sta questo valore a n cifre?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
mistervox (Normal User)
Rookie


Messaggi: 26
Iscritto: 11/01/2010

Segnala al moderatore
Postato alle 21:45
Giovedì, 25/02/2010
Testo quotato

Postato originariamente da mistervox:

Testo quotato

Postato originariamente da nessuno:

Se cambi esercizio, è ovvio che i suggerimenti non vanno piu' ...

Avevi scritto

"stampi semplicemente un numero decimale a due cifre"

adesso scrivi

"stampa a video un numero intero positivo di n cifre"

Deciditi ...


All'inizio non sapevo la consegna esatta, ora che si sa potete aiutarmi?


Siamo proprio alle basi, non devo nemmeno inserirlo da fuori il numero lo inserisco direttamente dal sorgente, ora il professore non spiega nulla, quindi non saprei dove metterelo.
Io so che per stampare una cifra aggiungo 30h alla cifra, la sposto in dl e col servizio 02h di int 21 la stampo, ma se ho un numero dentro ad un registro di più cifre ad esempio ho il numero 15 come faccio a stampare una cifra alla volta?

PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 6405
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:48
Giovedì, 25/02/2010
Okay ... nel sorgente dove? In un registro ? Di che tipo ? In memoria ?

Anche se il numero è di n cifre, n avrà un valore massimo, no?

Se non si ha questa informazione, non si puo' scrivere il codice ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
---
Il grande studioso italiano Bruno de Finetti ( uno dei padri fondatori del moderno Calcolo delle probabilità ) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo